# Kratos

Projekt realizujący temat „Narzędzie sterujące mocą sygnału karty bezprzewodowej”.

Program wykorzystujący gniazda `netlink` do monitorowania sygnału sieci Wi-Fi i korygowania na tej podstawie mocy karty sieciowej.

## pliki źródłowe

* `main.c`: główny plik programu --- deleguje pracę (tj. zleca interpretację argumentów programu oraz rozpoczyna monitorowanie siły sygnału Wi-Fi);
* `args.c`, `args.h`: są odpowiedzialne za interpretację argumentów programu;
* `netlink.c`, `netlink.h`: zawierają definicje struktur służących do komunikacji przez gniazda `netlink` oraz przechowujących informacje o interfejsie sieciowym, a także funkcje inicjujące i kończące komunikację;
* `monitor.c`, `monitor.h`: zawiera kod monitorujący cyklicznie siłę sygnału Wi-Fi oraz przekazujący informację o zmianie do funkcji wykonawczej;
* `setter.c`, `setter.h`: zawiera kod reagujący na zmianę siłę sygnału Wi-Fi --- tj. wysyłający przez gniazdo `netlink` komendę zmiany mocy karty Wi-Fi;
* `log.c`, `log.h`: zawierają funkcje służące do logowania zdarzeń.

## kompilacja

Do kompilacji wymagana jest biblioteka [`libnl3`](https://github.com/thom311/libnl/), a dokładnie jej dwie części: `libnl` oraz `libnl-genl`

Aby skompilować program należy wykonać:

`make`

lub

`gcc -o kratos *.c -lnl-3 -lnl-genl-3 -I/usr/include/libnl3`

Ścieżka `/usr/include/libnl3/` zawiera pliki nagłówkowe biblioteki `libnl3` w dystrybucji Parabola GNU/Linux-libre (oraz innych pochodnych od dystrybucji Arch Linux) tj. zawiera katalog `netlink`. Ta ścieżka może być inna w innych dystrybucjach.

## uruchomienie

Program musi być uruchomiony z prawami użytkownika `root`.

`./kratos INTERFEJS`

Opcje oraz pomoc dot. uruchomienia: `./kratos --help`
